#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<poll.h>

#define MAX_POLL_SIZE 10

int main()
{
  //定义事件结构体数组
  struct pollfd fds[MAX_POLL_SIZE];

  //添加要监控的描述符事件信息
  fds[0].fd=0;      //标准输入事件
  fds[0].events=POLLIN;  //监控可读事件

  while(1){
    int ret=poll(fds,1,3000);     //超时时间为 3000 毫秒 --- 3s
    if(ret<0){
      perror("poll error!\n");
      continue;
    }
    else if(ret==0){
      printf("poll timeout!\n");
      continue;
    }
    int i=0,valid_count=1;       //只监控可读事件，因此有效监控个数 valid_count=1
    for(i=0;i<valid_count;++i){
      if(fds[i].revents & POLLIN){    //就绪可读事件
         char buf[1024]={0};
         read(fds[i].fd,buf,1023);
         printf("buf:[%s]\n",buf);
      }else if(fds[i].revents & POLLOUT)  {
       //就绪可写事件
         printf("POLLOUT EVENTS!\n");  
      }
    }
  }
  return 0;
}
